const path = require('path')
function resolve (dir) {
  return path.join(__dirname, dir)
}
// cdn预加载
const externals = {
  vue: 'Vue',
  'vue-router': 'VueRouter',
  vuex: 'Vuex',
  axios: 'axios',
  moment: 'moment',
  'vue-antd-ui': 'antd'
}
// cdn环境配置
const cdn = {
  // 开发环境
  serve: {
    css: [
      '/static/antd.min.css'
    ],
    js: [
      '/static/vue.min.js',
      '/static/vue-router.min.js',
      '/static/vuex.min.js',
      '/static/axios.min.js',
      '/static/moment.min.js',
      '/static/antd.min.js'
    ]
  },
  // 生产环境
  build: {
    css: [
      '/static/antd.min.css'
    ],
    js: [
      '/static/vue.min.js',
      '/static/vue-router.min.js',
      '/static/vuex.min.js',
      '/static/axios.min.js',
      '/static/moment.min.js',
      '/static/antd.min.js'
    ]
  }
}

module.exports = {
  publicPath: '/', // 基本路径
  outputDir: 'dist', // 打包的时候生成的一个文件名
  assetsDir: 'assets', // 静态资源目录(js,css,img,fonts)这些文件都可以写里面
  lintOnSave: false, // 是否开启eslint保存检测 ,它的有效值为 true || false || 'error'
  productionSourceMap: false, // 生产环境是否生成 sourceMap 文件，一般情况不建议打开
  devServer: {
    // open: true, // npm run serve后自动打开页面
    host: '0.0.0.0', // 匹配本机IP地址(默认是0.0.0.0)
    port: 8080, // 开发服务器运行端口号
    proxy: {
      [process.env.VUE_APP_PROXY_MARK]: {
        target: process.env.VUE_APP_BASE_URL,
        changeOrigin: true
      }
    }
  },
  // 显式转义依赖
  // transpileDependencies: ['webpack-dev-server/client'],
  chainWebpack: config => {
    config.resolve.alias
      .set('@$', resolve('src'))
      .set('assets', resolve('src/assets'))
      .set('components', resolve('src/components'))
      .set('layout', resolve('src/layout'))
      .set('base', resolve('src/base'))
      .set('static', resolve('src/static'))
    // 组测全局变量
    const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
    types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))
    // config.plugin('html').tap(args => {
    //   if (isProduction) {
    //     args[0].cdn = cdn.build
    //   } else {
    //     args[0].cdn = cdn.serve
    //   }
    //   return args
    // })
  },
  runtimeCompiler: true
}
const addStyleResource = (rule) => {
  rule.use('style-resource')
    .loader('style-resources-loader')
    .options({
      patterns: [
        // 需要全局导入的less,这个地方一点要写./src才行,否则会报错...
        path.resolve(__dirname, './src/assets/css/color.less')
      ]
    })
}
